import pandas as pd

pd.set_option('expand_frame_repr', False)  # 当列太多时显示不清楚

# 导入数据
df = pd.read_csv(
    filepath_or_buffer='../../data/sh600000.csv',
    encoding='gbk',
    # 跳过第一行不读
    skiprows=1,
    # 指定列设置为index
    index_col=['交易日期']
)

# 看数据
# print(df.shape) # 看有多少行，多少列
# print(df.shape[0])  # 取行的数量，列就是1
# print(df.columns)  # 顺序输出每一列的名字
# for i in df.columns:
#     print(i)
#     pass
# print(df.index) # 顺序输入每一行的名字
# print(df.dtypes)  # 输出每一列变量类型
# print(df.head(3))  # 看前三行的数据
# print(df.tail(3))  # 看后三行的数据
# print(df.sample(n=3))  # 随机抽取三行数据
# print(df.describe())  # 取常用数学函数，只对数字列有效

# 修正数据格式
# pd.set_option('expand_frame_repr',False)
# pd.set_option('display.max_rows',1000)
# pd.set_option('precision',1) # 浮点的精度
# print(df)

# 选取指定的行、列
# print(df['开盘价'])
# print(df[['开盘价', '收盘价']])


# print(df.loc[['1999-11-11','1999-11-25']])  # 取某两行
# print(df.loc['1999-11-11'])  # 取某一行，返回Series
# print(df.loc['2000-03-30':'2000-04-30'])  # 选取在此范围内的多行，和在list中slice操作类似，读取的数据是DataFrame类型
# print(df.loc[:, '开盘价':'最低价'])  # 选取在此范围内的多列，读取的数据是DataFrame类型
# print(df.loc['2000-03-30': '2000-07-31', '开盘价':'收盘价'])  # 读取指定的多行、多列。逗号之前是行的范围，逗号之后是列的范围。读取的数据是DataFrame类型
# print(df.loc[:,:])  # 读取所有行和列
# print(df.at['2000-03-20', '开盘价'])  # 使用at读取指定的某个元素。loc也行，但是at更高效。


# iloc操作，通过position来读取
# print(df.iloc[0])  # 读取某一行
# print(df.iloc[1:3])  # 选取在此范围内的多行
# print(df.iloc[:,1:3])  # 选取在此范围内的多列
print(df.iat[1,3])  # 使用iat读取指定的某个元素。使用iloc也行，但是iat更高效。

